[Git 自己理解說明]
- 在自己的電腦( =本機 = Local端) 開一個 Repository(".git"檔), 之後這個地方的檔案就都可以 add,commit,push到GitHub中
- Git有自己的Git Bash, 就像Window的cmd(命令提示字元)一樣, 可以使用指令來操作平常使用滑鼠在做的事情
- 承上2, 不過Git Bash所使用的指令是 Linux的指令
[GitHub 自己理解說明]
- 類似Google Drive 也就是雲端硬碟, 為什麼要這樣做?
a. 當使用者在開發程式時, 可能在不同地方開發, 如果每次開發都要儲存在硬碟或USB, 帶到另外一個地方再抓出來, 有點麻煩
b. 當多個使用者一起開發, 其實他們正在開發同一個項目, 只是經過拆分後, 負責的內容/進度可能都不相同, 並且他們可能在不同的時間/地點開發, 但開發完後需要整合在一起. 以誰的版本為主呢? 放到誰那邊做整合呢? 此時,就是GitHub應用的場景
[名詞說明]
- .git (本地檔), 創建在本地資料夾的檔案,有這個才能上傳此資料夾的檔案到GitHub中
- Repository (資料夾),存放所有檔案的地方 (in GitHub)
- Commit (快照),保存歷史紀錄 (存檔)
- Branch (分支), 分成
- Master branch: 主程式
- Feature branch: 複製出來修改的程式
[大致流程步驟]
- 到Git官網下載檔案 (我都選預設安裝, 更改安裝設定請自行上網查閱資料)
- 去GitHub網站 新增帳號 並 登入
- 進行下面描述的 "Git&GitHub操作步驟"
★[Git&GitHub操作步驟]
-
在本機進入資料夾 (此資料夾內容為想要上傳至GitHub的檔案)
-
右鍵 "Git Bash Here"
-
ls
:查看所在地有甚麼檔案
-
pwd
:查看目前所在位置
-
事前作業(設置用戶信息)
-
git config --global user.name "Robbert"
-
git config --global user.email "abc@gmail.com"
> 目前認知這兩個不太重要隨便輸入
-
git status
:
- "fatal: not a git repository (or any of the parent directories): .git"
- 顯示沒有.git在目前位置
-
git init
:創建repository
-
git status
:"On branch master" 在master這個主分支
- No commits yet > 目前沒有任何快照版本
- [Hint]
rm xxx
:可以刪除此資料夾的檔案 (ex: rm GitA.txt)
- [Hint]
rm -fr .git
:可以刪除.git
-
在目前所在位置創建檔案
- 右鍵 > 新增 > "GitA.txt"
-
git status
:發現GitA.txt為紅色, 代表在這repository中, 此檔案還沒加入成為 Git所追蹤的檔案
- 為什麼要追蹤? 追蹤後Git才有機會知道 這檔案的變化及版本(存檔功能)
-
git add "GitA.txt"
:將檔案加入追蹤
-
git status
:此時看到GitA.txt已經變成綠色,代表已經加入追蹤
- [Hint] 若資料夾內有 多個 檔案需要加入 > git add . (代表加入這資料夾的所有檔案)
-
git commit -m "v1"
: 操作存檔功能
- 加入 "-m" 就可以不用開啟文字編輯器 (vi)
- 將此次存檔命名為 "v1"
-
git log
:查看現在有哪些commit
-
git status
:發現 "GitA.txt" 不見了 (被commit過後,直到下次更改檔案前,都不會出現(視為已經存檔))
-
開啟 "GitA.txt" 修改裡面內容
- ex: 加入文字 "It's cool" > save&close
-
git status
:會發現 "GitA.txt" 又出現了
-
git add "GitA.txt"
:有修改過檔案,則要重新add ★★★
-
git commit -m "v2"
-
git log
:會發現裡面有兩個commit(v1和v2)
-
GitHub創建 Repository
- 創建GitHub帳號 > 右上角"+"號 > New repository (ex: repository name = Tutorial)
- 選擇"Public" > "Add a README file"隨便要不要勾選
- 找到創建的repository > 點入 > 點選"Code"按鈕 > 複製HTTPS的連結 (ex: "https://github.com/你的GitHub帳號名稱/Tutorial.git")
- [Hint] 在該repository可以找到刪除的方法 (上面Tab > "Settings")
-
git remote add origin https://github.com/你的GitHub帳號名稱/Tutorial.git
:從Local端連結到 GitHub的repository
-
git push -u origin master
:推到GitHub的origin master
- [Hint] "-u" 會把預設的remote設成orgin, 未來push若不指定remote,則都會推到origin
- 再次
git push origin master
> 會顯示所有東西都已經上傳
- 此時再次更改local file "GitA.txt"的內容
-
再次重跑Git中的檔案
-
git stauts
:發現 "GitA.txt"已經被編輯過, 所以需要再重跑檔案
-
git add .
-
git commit -m "v3"
-
git push
(因為上面有設定 git push -u origin master, 所以這邊可以只用 git push, 就可以傳到上面設定的地方)
-
完成
- 網頁打開GitHub,並重新整理
- 看到有 "2 branches"
- 一個叫做 main branch > 剛創repository時就會產生的
- 一個叫做 master branch > 上述操作所產生的
- 切換到 master branch > 看到"GitA.txt"已經上傳,並且旁邊有個 "v3"
- 再往右邊看會有上傳的時間,時間上面有一個 "3 commits" (因為剛剛總共commit了三次)
- 上述總共commit,push分別幾次?
- commit: 3次
- push: 2次 (第一次push上傳了 "v1","v2")(第二次push上傳了 "v3")
-
(額外) 如何在不同電腦取出GitHub的內容操作>
- 進入想要存放下載資料的local 資料夾
- 右鍵 "Git Bash Here"
- 分成兩個Case
- Case1: 在GitHub創repository時有"Add a README file" > 此時會先有一個main branch(Default) > 後來push的GitA.txt會在master branch,要指定複製的branch
- Case2: 在GitHub創repository時沒有"Add a README file" > 此時只會有master branch
- 完成
=====
待補
=====
未解疑問
[補充]
若某次commit錯誤, 可使用 git reset --soft commit id 來回到某次commit (--soft是回到不刪除, --hard是回到並刪除之後的)
[疑問]
(尚未解決) 若刪除 commit, 會出現版本不一的問題 > git pull 合併 > 但就會又跑出刪除的commit
=====
Git指令說明
[查詢功能]
- git --version 查看下載的git版本
- git status 檢查所在檔案狀態(只顯示有更改的部分,commit後若沒有更改,則不會出現)
- git log 查看現在有哪些commit
- git remote 查詢現在連到哪個GitHub
[正常git加入檔案流程]
- git init 在local端創建 repository
- git add "GitA.txt"
- git commit -m "xxx"
- git remote add origin "github.com/xxx/Tutorial.git
- git push origin master
=====
ref:
tedsieblog.wordpress.com/2017/01/19/basic-git-commands
後話:
上述是經過學習youtuber影片,上網爬文章後自行得出的結論.
可能會有許多錯誤,若有發現請各路高手隨時糾正.
這個筆記是給我自己看,所以紀錄的有點亂,但還是希望可以幫助到地球上的任意一個人也好,請多包涵